This relates generally to graphics processing and, particularly, to tessellation in rendering systems, such as interactive, real time, and off-line/film rendering.
Modern graphics processors contain dedicated hardware for tessellating surfaces into many small triangles. The DirectX 11 application programming interface (“DX11”) (API) adds three new stages to the graphics pipeline to support tessellation: the hull shader, the fixed-function tessellator and the domain shader. The hull shader is executed once per patch and once per control point, typically to compute tessellation factors and change control point bases. The fixed-function tessellator takes tessellation factors as inputs and generates a large set of vertex positions in the domain of the input primitive and connectivity information between vertices. The connectivity information forms many small triangles. The domain shader is executed once per generated vertex position from the tessellator. A typical domain shader usage is evaluating the position and normal of a parametric surface, using, for example, a set of control points, barycentric coordinates, and a detailed texture as inputs. The output is a displaced vertex defined by a set of attributes. One attribute is the position, but the shader also can compute the normal/tangent/bi-tangent/texture coordinate/color/transparency or other attribute of the displaced vertex.